package com.le.tester.book.effectivejava3rdchinese.articleten;

import java.math.BigDecimal;
import java.util.Objects;

/**
 * createTime：2022/8/2 14:01
 * description：重写equal应该注意的三条定式，对于使用框架的java应用，一般是不去重写equal的
 */
public final class CaseInsensitiveString {

    //定义成null，预防string对象不回收
    private final String s;

    public CaseInsensitiveString(String s) {
        this.s = Objects.requireNonNull(s);
    }

    @Override
    public boolean equals(Object o) {
        if (o instanceof CaseInsensitiveString) {
            return s.equalsIgnoreCase(((CaseInsensitiveString) o).s);
        }

        if (o instanceof String) {
            return s.equalsIgnoreCase((String) o);
        }
        return false;
    }

    public static void main(String[] args) {
        BigDecimal bigDecimal = BigDecimal.valueOf(100.22);
        BigDecimal bigDecimal1 = BigDecimal.valueOf(100.23);
        System.out.println(bigDecimal1.subtract(bigDecimal));
    }
}
